package 异常;
import java.util.Arrays;
import java.util.*;
/**
  异常抓取
  
  try{
	  可能出现异常的代码块;
	  出现的异常按顺序catch，抓到一个后退出try运行后面的代码
	  catch类型的顺序  子类>>父类，大的放后面
  }catch(异常类型(不知道哪个类型直接写父类Exception) e(对象名)){
      e.printStackTrace();可以打印当前的异常信息供测试
	  抓到异常执行的代码;
  }finally{
	  finally里面的代码是异常的出口
	  不管出不出现异常最后都要执行
  }
  代码....
*/
public class A01异常
{
	public static void main(String[] args){
		div(15,2);
		try{
			div2(10,0);
		}catch(ArithmeticException e){
			e.printStackTrace();
		}
		input();
	}
	public static void div(int num1,int num2){
		int arr[]={1,2,3,4,5};
		try{
			System.out.println(arr[3]);
			//arr=null;
			int result=num1/num2;
			System.out.println(result);
			System.out.println(arr[2]);
		}catch(ArithmeticException e){
			//e.printStackTrace();
			System.out.println("出现除零异常");
		}catch(ArrayIndexOutOfBoundsException e){
			System.out.println("数组越界异常");
		}catch(NullPointerException e){
			System.out.println("空指针异常");
		}finally{
			System.out.println("程序执行完成");
		}
		
		System.out.println("任务结束");
	}
	//throws 把异常抛给谁，可跟多个 和 throw  
	public static void div2(int a,int b)throws ArithmeticException{
		try{
			int c=a/b;
			System.out.println(c);
		}catch(ArithmeticException e){
			//throw 抛出 新建异常对象
			throw new ArithmeticException("除数不能为零");//把by zero 自定义
		}
	}
	public static void input(){
		try{
			Scanner sc=new Scanner(System.in);
			int a= sc.nextInt();
			System.out.println("输入的是 "+a);
		}catch(InputMismatchException e){
			System.out.println("输入类型错误");
		}
		
	}
}
